package de.unicornEntertainment.stundenplanapp.threadTools;

import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.os.AsyncTask;
import de.unicornEntertainment.stundenplanapp.R;
import de.unicornEntertainment.stundenplanapp.adapter.MyArrayAdapter_StundenplanDetails;
import de.unicornEntertainment.stundenplanapp.stundenplan.StundenplanDetailsActivity;
import de.unicornEntertainment.stundenplanapp.util.JSONParser;

public class MyAsyncTask_Stundenplan extends AsyncTask {

		// Globale Deklaration
		private StundenplanDetailsActivity context;
		private JSONArray stundenplan;
		private String klassenbezeichnung = "";
				
		// JSON Nodes
		private static final String TAG_STUNDEN = "stunden";
		private static final String TAG_STUNDE = "Stunde";
		private static final String TAG_TAG = "Tag";
		private static final String TAG_RAUMNUMMER = "Raumnummer";
		private static final String TAG_KUERZEL = "Kuerzel";
		private static final String TAG_FACH = "Fach";
		
		private String url = "http://gruppef.green-lagoon.de/stundenplan.php?klasse=";
		
		
		// Konstruktor
		public MyAsyncTask_Stundenplan(StundenplanDetailsActivity context, String klasse) {
			this.context = context;
			this.klassenbezeichnung = klasse;
		}

		// Hintergrundverarbeitung in eigenem Thread
		@Override
		protected Object doInBackground(Object... arg0) {
			try {
				
				// URL um Parameter "klasse" erweitern
				url = url+klassenbezeichnung;
				
				System.out.println("Stundenplan-URL: " + url);
				
				// JSON Parser instanziieren
				JSONParser jParser = new JSONParser();
				
				// JSON als String von URL abgreifen
				JSONObject stunden = jParser.getJSONFromUrl(url);
				
				System.out.println("JSON: " + stunden.toString());
				
				// JSON-Array mit allen Lehrern abrufen
	            stundenplan = stunden.getJSONArray(TAG_STUNDEN);
	            
	            System.out.println("Anzahl Stunden im JSON-Array: " + stundenplan.length());
	            
	            
	            // Über alle Stunden iterieren
	            for(int i = 0; i < stundenplan.length(); i++){
	                JSONObject einzelstunde = stundenplan.getJSONObject(i);
	                 
	                // Jedes JSON-Item in eine Variable stellen
	                String stunde = einzelstunde.getString(TAG_STUNDE);
	                String kuerzel = einzelstunde.getString(TAG_KUERZEL);
	                String tag = einzelstunde.getString(TAG_TAG);
	                String raumnummer = einzelstunde.getString(TAG_RAUMNUMMER);
	                String fach = einzelstunde.getString(TAG_FACH);
	                 
	                System.out.println("Stunde: " + stunde); 
	                
	                // Eine neue HashMap erzeugen
	                HashMap<String, String> map = new HashMap<String, String>();
	                 
	                // adding each child node to HashMap key => value
	                map.put(TAG_STUNDE, stunde);
	                map.put(TAG_KUERZEL, kuerzel);
	                map.put(TAG_TAG, tag);
	                map.put(TAG_RAUMNUMMER, raumnummer);
	                map.put(TAG_FACH, fach);
	                
	                System.out.println("HashMap-Inhalt: " + map);
	 
	                // HashMap zu ArrayList hinzufügen
//	                context.getStunden().add(map);
//	                for(int j = 0; j < context.getStunden().size(); j++){
//	                	System.out.println(context.getStunden().get(j));
//	                }
//	                Log.d("AsynTask", "HashMap: " + i);
				}
			}
			catch(JSONException e) {
				e.printStackTrace();
				
				// Dialog im Fehlerfall entlassen
				context.getPrg().dismiss();
			}
			return null;
		}
		
		// Nachbearbeitung im Vordergrund... Thread der GUI
		@Override
		protected void onPostExecute(Object result) {
			try {
				/**
		         * Die Daten aus den JSON-Objekten an den Adapter übergeben.
		         * */
//				MyArrayAdapter_StundenplanDetails mAdapter = new MyArrayAdapter_StundenplanDetails(context, R.id.stundenplan_grid_stundenplan, context.getStunden());
//				context.setAdapter(mAdapter);
//				System.out.println("MyArrayAdapter_StundenplanDetails: " + context.getAdapter().toString());
//		 
//				
//		        // Adapter in der ListView registrieren 
//		        context.getGrid().setAdapter(mAdapter);
//		        
				
		        // Dialog entlassen
		        context.getPrg().dismiss();
			}
			catch(Exception e){
				e.printStackTrace();
			 // Dialog entlassen
		        context.getPrg().dismiss();
			}
		}

}
